home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #1 / Amiga Plus CD - 2000 - No. 1.iso / Tools / Dev / Meshwriter / MeshWriterTest / modules / ripples.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-12-03  |  3.3 KB  |  114 lines

  1. /*
  2. **      $VER: ripples.c 1.00 (20.3.1999)
  3. **
  4. **      Creation date     : 20.3.1999
  5. **
  6. **      Description       :
  7. **         MeshWriter testprogram shape module.
  8. **
  9. **
  10. **      Written by Stephan Bielmann
  11. **
  12. */
  13.  
  14. /*************************** Includes *******************************/
  15.  
  16. #ifndef WITHMWLLIB
  17. #include "//meshlib.h"
  18. #else
  19. #include <meshwriter/meshwriter.h>
  20. #include <pragma/meshwriter_lib.h>
  21. #endif
  22.  
  23. #include <math.h>
  24.  
  25. /**************************** Defines *******************************/
  26.  
  27. #define PI            3.14159265359
  28. #define RIPPLESSTEPS  20
  29.  
  30. /*********************** Type definitions ***************************/
  31.  
  32. /********************** Private functions ***************************/
  33.  
  34. /********************** Public functions ****************************/
  35.  
  36. /********************************************************************\
  37. *                                                                    *
  38. * Name         : ripples                                             *
  39. *                                                                    *
  40. * Description  : Draws some ripples with the help of a formula got   *
  41. *                out of Plotter 3D by Sven Steiniger.                *
  42. *                                                                    *
  43. * Arguments    : mesh    IN  : An initialized mesh handle.           *
  44. *                                                                    *
  45. * Comment      :                                                     *
  46. *                                                                    *
  47. \********************************************************************/
  48. void ripples(ULONG mesh) {
  49.   ULONG m[7],i;
  50.   TOCLColor color;
  51.   TOCLVertex matrix[RIPPLESSTEPS+1][RIPPLESSTEPS+1];
  52.   ULONG x,y;
  53.   FLOAT u,v;
  54.  
  55.   MWLMeshMaterialAdd(mesh,&m[0]);
  56.   color.r=0,color.g=0,color.b=0;
  57.   MWLMeshMaterialDiffuseColorSet(mesh,m[0],&color);
  58.  
  59.   MWLMeshMaterialAdd(mesh,&m[1]);
  60.   color.r=255,color.g=0,color.b=0;
  61.   MWLMeshMaterialDiffuseColorSet(mesh,m[1],&color);
  62.  
  63.   MWLMeshMaterialAdd(mesh,&m[2]);
  64.   color.r=255,color.g=255,color.b=0;
  65.   MWLMeshMaterialDiffuseColorSet(mesh,m[2],&color);
  66.  
  67.   MWLMeshMaterialAdd(mesh,&m[3]);
  68.   color.r=255,color.g=255,color.b=255;
  69.   MWLMeshMaterialDiffuseColorSet(mesh,m[3],&color);
  70.  
  71.   MWLMeshMaterialAdd(mesh,&m[4]);
  72.   color.r=0,color.g=255,color.b=255;
  73.   MWLMeshMaterialDiffuseColorSet(mesh,m[4],&color);
  74.  
  75.   MWLMeshMaterialAdd(mesh,&m[5]);
  76.   color.r=255,color.g=0,color.b=255;
  77.   MWLMeshMaterialDiffuseColorSet(mesh,m[5],&color);
  78.  
  79.   MWLMeshMaterialAdd(mesh,&m[6]);
  80.   color.r=0,color.g=0,color.b=0;
  81.   MWLMeshMaterialDiffuseColorSet(mesh,m[5],&color);
  82.  
  83.   MWLMeshNameSet(mesh,"Ripples");
  84.  
  85.   u=0;
  86.   for(x=0;x<RIPPLESSTEPS+1;x++) {
  87.     v=0;
  88.     for(y=0;y<RIPPLESSTEPS+1;y++) {
  89.         matrix[x][y].x=u*cos(v);
  90.         matrix[x][y].y=u*sin(v);
  91.         matrix[x][y].z=2*cos(4*u)*cos(4*u)*exp(-u);
  92.  
  93.         v+=2*PI/RIPPLESSTEPS;
  94.     }
  95.     u+=PI/RIPPLESSTEPS;
  96.   }
  97.  
  98.   for(x=0;x<(RIPPLESSTEPS);x++) {
  99.     for(y=0;y<(RIPPLESSTEPS);y++) {
  100.       i=(ULONG)(10*matrix[x][y].z);
  101.  
  102.       if(i>6) i=6;
  103.  
  104.       MWLMeshPolygonAdd(mesh,m[i]);
  105.       MWLMeshPolygonVertexAdd(mesh,&matrix[x][y]);
  106.       MWLMeshPolygonVertexAdd(mesh,&matrix[x+1][y]);
  107.       MWLMeshPolygonVertexAdd(mesh,&matrix[x+1][y+1]);
  108.       MWLMeshPolygonVertexAdd(mesh,&matrix[x][y+1]);
  109.     }
  110.   }
  111. }
  112.  
  113. /************************* End of file ******************************/
  114.